#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import argparse
import os
import sys
from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile

from NetEbbms import NetEbbms

import psyco
psyco.full()


def main():
	# スクリプトパスを取得 #
	scriptDirPath = os.path.abspath(os.path.dirname(__file__))


	# 設定ファイルディレクトリパスを取得 #
	configDirPath = os.path.join(os.path.split(scriptDirPath)[0], 'config')


	# 設定ファイルパスを取得 #
	configFilePath = os.path.join(configDirPath, 'netebbms.conf')


	# モデル リスト ファイル パスを取得 #
	modelListFilePath = os.path.join(configDirPath, 'model.list')


	# インスタンス作成 #
	myNetEbbms = NetEbbms(configFilePath, modelListFilePath, True)


	# メイン ループ #
	try:
		while True:
			myNetEbbms.showAnimation()

	except Exception, ex:
		print >> sys.stderr, ex
		sys.exit(1)

	finally:
		myNetEbbms.close()


if __name__ == '__main__':
	# コマンドラインオプションをパース #
	parser = argparse.ArgumentParser()
	parser.add_argument(
		'-d', '--daemon',
		action = 'store_true',
		default = False,
		dest = 'runDaemon',
		help = 'run this script as daemon'
	)
	args = parser.parse_args()


	try:
		if args.runDaemon == True:
			# デーモンとして起動 #
			dc = DaemonContext(
				pidfile = PIDLockFile('/var/run/netebbms/netebbms.pid'),
				stderr = open('/var/log/netebbms/ebbms_error.log', 'w+')
			)
	
			with dc:
				main()

		else:
			# コマンドとして起動 #
			main()

	except KeyboardInterrupt:
		sys.exit(0)

	except Exception, ex:
		print >> sys.stderr, ex
		sys.exit(1)

